1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.google.common.collect.testing.testers;
18
19 import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
20 import static com.google.common.collect.testing.features.CollectionFeature.REJECTS_DUPLICATES_AT_CREATION;
21 import static com.google.common.collect.testing.features.CollectionSize.ONE;
22 import static com.google.common.collect.testing.features.CollectionSize.ZERO;
23
24 import com.google.common.annotations.GwtCompatible;
25 import com.google.common.collect.testing.features.CollectionFeature;
26 import com.google.common.collect.testing.features.CollectionSize;
27
28 import java.util.Arrays;
29 import java.util.List;
30
31
32
33
34
35
36
37
38 @GwtCompatible
39 public class SetCreationTester<E> extends AbstractSetTester<E> {
40 @CollectionFeature.Require(value = ALLOWS_NULL_VALUES,
41 absent = REJECTS_DUPLICATES_AT_CREATION)
42 @CollectionSize.Require(absent = {ZERO, ONE})
43 public void testCreateWithDuplicates_nullDuplicatesNotRejected() {
44 E[] array = createArrayWithNullElement();
45 array[0] = null;
46 collection = getSubjectGenerator().create(array);
47
48 List<E> expectedWithDuplicateRemoved =
49 Arrays.asList(array).subList(1, getNumElements());
50 expectContents(expectedWithDuplicateRemoved);
51 }
52
53 @CollectionFeature.Require(absent = REJECTS_DUPLICATES_AT_CREATION)
54 @CollectionSize.Require(absent = {ZERO, ONE})
55 public void testCreateWithDuplicates_nonNullDuplicatesNotRejected() {
56 E[] array = createSamplesArray();
57 array[1] = samples.e0;
58 collection = getSubjectGenerator().create(array);
59
60 List<E> expectedWithDuplicateRemoved =
61 Arrays.asList(array).subList(1, getNumElements());
62 expectContents(expectedWithDuplicateRemoved);
63 }
64
65 @CollectionFeature.Require(
66 {ALLOWS_NULL_VALUES, REJECTS_DUPLICATES_AT_CREATION})
67 @CollectionSize.Require(absent = {ZERO, ONE})
68 public void testCreateWithDuplicates_nullDuplicatesRejected() {
69 E[] array = createArrayWithNullElement();
70 array[0] = null;
71 try {
72 collection = getSubjectGenerator().create(array);
73 fail("Should reject duplicate null elements at creation");
74 } catch (IllegalArgumentException expected) {
75 }
76 }
77
78 @CollectionFeature.Require(REJECTS_DUPLICATES_AT_CREATION)
79 @CollectionSize.Require(absent = {ZERO, ONE})
80 public void testCreateWithDuplicates_nonNullDuplicatesRejected() {
81 E[] array = createSamplesArray();
82 array[1] = samples.e0;
83 try {
84 collection = getSubjectGenerator().create(array);
85 fail("Should reject duplicate non-null elements at creation");
86 } catch (IllegalArgumentException expected) {
87 }
88 }
89 }